package util;

import javax.swing.text.JTextComponent;

import exception.ArgumentInvalideException;

public final class Util {

	/**
	 * Verifie si l'objet passé en parametre est un bien un Object valide.
	 * 
	 * @param o
	 *            l'Object a verifier
	 * @throws ArgumentInvalideException
	 *             the argument invalide exception
	 */
	public static void checkObject(final Object o)
			throws ArgumentInvalideException {
		if (o == null)
			throw new ArgumentInvalideException();
	}

	/**
	 * Verifie si la String passé en parametre est un bien une String valide.
	 * 
	 * @param s
	 *            la String a verifier
	 * @throws ArgumentInvalideException
	 *             the argument invalide exception
	 */
	public static void checkString(final String s)
			throws ArgumentInvalideException {
		checkObject(s);
		if (s.trim().equals(""))
			throw new ArgumentInvalideException();
	}

	/**
	 * Verifie si le double passé en parametre est un bien un double nul ou
	 * negatif.
	 * 
	 * @param d
	 *            le double a verifier
	 * @throws ArgumentInvalideException
	 *             the argument invalide exception
	 */
	public static void checkNegativeOrZero(final double d)
			throws ArgumentInvalideException {
		if (d > 0.0)
			throw new ArgumentInvalideException();
	}

	/**
	 * Verifie si le double passé en parametre est un bien un double nul ou
	 * positif.
	 * 
	 * @param d
	 *            le double a verifier
	 * @throws ArgumentInvalideException
	 *             the argument invalide exception
	 */
	public static void checkPositiveOrZero(final double d)
			throws ArgumentInvalideException {
		if (d < 0)
			throw new ArgumentInvalideException();
	}

	/**
	 * Verifie si le double passé en parametre est un bien un double positif.
	 * 
	 * @param d
	 *            le double a verifier
	 * @throws ArgumentInvalideException
	 *             the argument invalide exception
	 */
	public static void checkPositive(final double d)
			throws ArgumentInvalideException {
		if (d <= 0.00001)
			throw new ArgumentInvalideException();
	}

	/**
	 * Verifie si l'int passé en parametre est un bien un int negatif.
	 * 
	 * @param i
	 *            l'int a verifier
	 * @throws ArgumentInvalideException
	 *             the argument invalide exception
	 */
	public static void checkPositive(final int i)
			throws ArgumentInvalideException {
		if (i <= 0)
			throw new ArgumentInvalideException();
	}

	/**
	 * Verifie si le JTextComponent passé en parametre est un bien un int
	 * negatif.
	 * 
	 * @param comp
	 *            le JTextComponent a verifier
	 * @throws ArgumentInvalideException
	 *             the argument invalide exception
	 */
	public static void checkField(JTextComponent comp)
			throws ArgumentInvalideException {
		if (comp.getText().equals("")) {
			throw new ArgumentInvalideException("Le champ est vide");
		}
	}

	public static double arrondirEtFormater(double nombre, int decimal) {
		if (decimal == 1) {
			nombre = (Math.rint(nombre * 10)) / 10;
			return nombre;
		} else if (decimal == 2) {
			nombre = (Math.rint(nombre * 100)) / 100;
			return nombre;
		} else if (decimal == 3) {
			nombre = (Math.rint(nombre * 1000)) / 1000;
			return nombre;
		} else if (decimal == 4) {
			nombre = (Math.rint(nombre * 10000)) / 10000;
			return nombre;
		}
		return 0;
	}
}
